home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Supervisor's Toolkit
/
Network Supervisor's Toolkit.iso
/
tools
/
lu62
/
chkparm.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-10
|
3KB
|
95 lines
/********************************************************
* *
* CHKPARM *
* Check verb parametrs. *
* *
* INPUT : pointer to the verb record, pointer *
* to the communication area. *
* OUTPUT: fill comm. area or set the return code *
* in the verb if function was failed. *
* *
* CopyRight 1995. Nicholas Poljakov all rights reserved.*
* *
********************************************************/
#include <cma.h>
#include <state1.h>
#include <lucb.h>
#include <tcb.h>
#include <rcb.h>
#include <psp.h>
#include <common.h>
#include <stdio.h>
#include <string.h>
struct psp psp_ini;
chkparm(s_ptr, ar)
struct com *s_ptr;
struct cma *ar;
{
struct rcb *p_rcb;
struct tcb *p_tcb;
struct lucb *p_lucb;
char tid[8];
unsigned long rid;
char *p;
int i;
#if OS_TYPE == 1
/********* Trace facility **********/
unsigned int rtype; /* type of record */
unsigned int pnum; /* point number */
char pname[8]; /* name of module */
char *drec; /* record for dump */
int lenr; /* record length */
rtype = INPROC;
strcpy(pname, "chkparm");
pnum = 1;
lenr = 0;
drec = NULL;
gtf(rtype, pname, pnum, drec, lenr);
/***********************************/
#endif
p = s_ptr -> tp_id;
for (i = 0; i < 8; i++) {
tid[i] = *(p + i);
}
rid = s_ptr -> conv_id;
/* looking for an appopriate LUCB */
p_lucb = psp_ini.lucb_list_ptr; /* We've got only one LUCB */
/* searching for an appopriate TCB */
p_tcb = p_lucb ->tcb_list_ptr;
while (p_tcb != NULL) {
if (memcmp(p_tcb->tcb_id, tid, 8) == 0)
break;
p_tcb = p_tcb->next;
}
if (p_tcb == NULL) {
s_ptr->prim_rc = PARAMETR_CHECK;
s_ptr->sec_rc = BAD_TP_ID;
return(-1);
}
/* searching for an appopriate RCB */
p_rcb = p_tcb ->rcb_list_ptr;
while (p_rcb != NULL) {
if (rid == p_rcb -> rcb_id)
break;
p_rcb = p_rcb->next;
}
if (p_rcb == NULL) {
s_ptr->prim_rc = PARAMETR_CHECK;
s_ptr->sec_rc = BAD_CONV_ID;
return(-1);
}
ar -> p_tcb = p_tcb;
ar -> p_rcb = p_rcb;
return(0);
}